package com.xingu.xg.service;

import com.xingu.xg.po.Part;
import com.baomidou.mybatisplus.extension.service.IService;
import com.xingu.xg.po.query.AddPeerNodeQuery;
import com.xingu.xg.po.query.AddUpDownNodeQuery;
import com.xingu.xg.po.query.CopyNodeQuery;
import com.xingu.xg.po.query.DeleteNodeQuery;
import com.xingu.xg.po.vo.PartSaveReqVO;
import com.xingu.xg.po.vo.PartTreeNode;
import com.xingu.xg.po.vo.PartUpdateReqVO;

import java.util.List;

public interface PartService extends IService<Part>{


    /**
     * 获取树列表
     *
     * @return {@link List }<{@link PartTreeNode }>
     */
    List<PartTreeNode> getTreeList();

    /**
     * 新增同级节点
     *
     * @param query 查询
     */
    void createPeer(AddPeerNodeQuery query);

    /**
     * 新增节点
     *
     * @param reqVO 新增vo
     */
    void createPart(PartSaveReqVO reqVO);

    /**
     * 更新节点
     *
     * @param reqVO 更新vo
     */
    void updatePartById(PartUpdateReqVO reqVO);

    /**
     * 新增上下级节点
     *
     * @param query 查询
     */
    void createUpDown(AddUpDownNodeQuery query);

    /**
     * 复制节点
     *
     * @param query 查询
     */
    void copyNode(CopyNodeQuery query);

    /**
     * 删除节点
     *
     * @param query 查询
     */
    void deleteNode(DeleteNodeQuery query);
}
